package com.oscar.springaidemo.ai.aiService;

import com.alibaba.cloud.ai.dashscope.chat.DashScopeChatOptions;
import io.swagger.v3.oas.annotations.servers.Server;
import jakarta.annotation.Resource;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.client.advisor.PromptChatMemoryAdvisor;
import org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor;
import org.springframework.ai.chat.memory.MessageWindowChatMemory;
import org.springframework.ai.tool.ToolCallback;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;

import java.lang.reflect.Array;
import java.util.Arrays;

@Service
public class AiServiceFactory {

    @Resource
    ToolCallback toolCallback;

    public static final String DEFAULT_PROMPT = """
            你是一个互联网行业的面试小助手小帮
            你可以提供专业且简洁的面试指导服务，如获取一些技术性相关的面试题目
            今天的日期是 {current_date}.
            """;

    @Bean("defaultChatClient")
    /**
     * spring-ai默认提供客户端
     */
    public ChatClient chatClient(ChatClient.Builder chatClientBuilder,PromptChatMemoryAdvisor promptChatMemoryAdvisor) {
        ChatClient build = chatClientBuilder
                .defaultSystem(DEFAULT_PROMPT)//默认预设词
                // 实现 Logger 的 Advisor,拦截器
                .defaultAdvisors(
                        Arrays.asList(
                                // 添加 Logger 的 Advisor
                                new SimpleLoggerAdvisor(),
                                promptChatMemoryAdvisor
                        )

                )
//                .defaultToolCallbacks(toolCallback)
                // 设置 ChatClient 中 ChatModel 的 Options 参数
                .defaultOptions(
                        DashScopeChatOptions.builder()
                                .withTopP(0.7)
                                .build()
                )
                .build();
        return  build;
    }

}
